<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="app">
         <!-- <p>输入框: <input type="text" :value="msg" @input="hanlderFn"></p>
         <p>msg: {{msg}}</p> -->

         <!-- <p>输入框: <input type="text" :value="msg" @input="($event)=>{msg=$event.target.value}"></p> -->
         <p>输入框: <input type="text" :value="msg" @input="msg=$event.target.value"></p>
         <p>msg: {{msg}}</p>


         <!-- <p>输入框: <input type="text" v-model="msg"></p>
         <p>msg: {{msg}}</p> -->
    </div>
</body>
<script>
    // Vue的特征之一 就是响应式
    // 1. Vue实例中的数据发生了改变, 页面也会同步更新

    // 模拟实现双向数据绑定: Vue的响应式原理 在配合 Vue中的事件 => 可以实现双向数据绑定
    //  1. Vue实例中的数据发生了改变, 页面也会同步更新
    //  2. 表单元素的相关属性(value checked)发生改变, 数据也会同步更新


    // 可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。
    // 它会根据控件类型自动选取正确的方法来更新元素  => 不同类型的表单元素 选取的属性和方法不一样
    

    // v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件：
    // text 和 textarea 元素使用 value property 和 input 事件；
    // checkbox 和 radio 使用 checked property 和 change 事件；( 多个 checkbox 和 radio 使用 value属性和 change 事件)
    // select 字段将 value 作为 prop 并将 change 作为事件。



    var vm = new Vue({
        el:"#app",
        data:{
            msg:"hello",
        },
        methods:{
            hanlderFn:function(e){
                this.msg = e.target.value;
            }
        }
       
    })


</script>
</html>